﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Aeroporto.modelo;
using Aeroporto.bd;
using Aeroporto.controle;
using System.Collections;
using Aeroporto.visão;

namespace Aeroporto.visao
{
    public partial class formCadastroAeronave : Form
    {

        private AeronaveControl aeronave_control = new AeronaveControl();
        
        public formCadastroAeronave()
        {
            InitializeComponent();
           
        }

        private void formCadastroAeronave_Load(object sender, EventArgs e)
        {
            lista_dados();
            limparInicial();
        }


        private void atualiza_campos()
        {
            int linha = grid_aeronave.CurrentRow.Index;

            txtCodigoAeronave.Text = grid_aeronave[0, linha].Value.ToString();
            txtFabricante.Text = grid_aeronave[1, linha].Value.ToString();
            txtModelo.Text = grid_aeronave[2, linha].Value.ToString();
            txtSubstituta.Text = grid_aeronave[3, linha].Value.ToString();
        }

        private void lista_dados()
        {
            try
            {
                grid_aeronave.DataSource = aeronave_control.lista_dados("aeronave");
                grid_aeronave.Columns["cod_aeronave"].HeaderText = "Codigo Aeronave";
                grid_aeronave.Columns["fabricante"].HeaderText = "Fabricante";
                grid_aeronave.Columns["modelo"].HeaderText = "Modelo";
                grid_aeronave.Columns["substituta"].HeaderText = "Substituta";
                atualiza_campos();
                grid_aeronave.ReadOnly = true;
            }catch(Exception e){
                MessageBox.Show("Erro na listagem do grid :"+e.ToString());
            }
        }


        private void btnPesquisar_Click(object sender, EventArgs e)
        {
            
        }

     
        private void limpar()
        {
            txtCodigoAeronave.Text = "";
            txtFabricante.Text = "";
            txtModelo.Text = "";
            txtSubstituta.Text = "";
        }

        private void limparInicial()
        {
            txtCodigoAeronave.Text = "";
            txtFabricante.Text = "";
            txtModelo.Text = "";
        }

        private void btnAdicionarAssento_Click(object sender, EventArgs e)
        {
            
            if(txtCodigoAeronave.Text == ""){

                MessageBox.Show("Insira o código da aeronave para cadastrar assentos","Alerta");
            }
            else{
                DataTable d = aeronave_control.pesquisar_codigo(txtCodigoAeronave.Text.TrimEnd());
                if (d.Rows.Count == 0)
                {
                    MessageBox.Show("Código de aeronave inexistente", "Alerta");
                }
                else{
                    formCadastroAssento assento = new formCadastroAssento(txtCodigoAeronave.Text);
                    assento.Show();
                    }
                }
        }

        private void btnInserirAeronave_Click_1(object sender, EventArgs e)
        {
            string substituta = txtSubstituta.Text;
            if (substituta == "")
            {
                substituta = "0000";
            }

            string codigo = aeronave_control.valida_substituta(txtSubstituta.Text);
            MessageBox.Show(codigo, "COdigo");

            if (substituta == "0000" || codigo != null)
            {

                MyMessageBox message_box = aeronave_control.valida_insert_aeronave(txtCodigoAeronave.Text, txtFabricante.Text, txtModelo.Text, substituta);

                MessageBox.Show(message_box.String1, message_box.String2);

                switch (message_box.String2)
                {
                    case "Aeronave ja cadastrada":
                        txtCodigoAeronave.Focus();
                        break;

                    case "Cadastrado":
                        limpar();
                        lista_dados();
                        break;
                }
            }
            else
            {
                MessageBox.Show("Substituta invalida", "Substituta");
            }
        }

        private void grid_aeronave_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
        {
            //atualiza_campos();
        }

        private void btnEditarAeronave_Click_1(object sender, EventArgs e)
        {
            string chave_antiga = grid_aeronave[0, grid_aeronave.CurrentCell.RowIndex].Value.ToString();
            MyMessageBox mb = aeronave_control.valida_update_aeronave(
                txtCodigoAeronave.Text, txtFabricante.Text, txtModelo.Text, txtSubstituta.Text, chave_antiga);
            MessageBox.Show(mb.String1, mb.String2);
            lista_dados();
        }

        private void btnDeletarAeronave_Click_1(object sender, EventArgs e)
        {
            if (txtCodigoAeronave.Text == "" && txtFabricante.Text == "" && txtModelo.Text == "")
            {
                MessageBox.Show("Escolha uma aeronave na tabela primeiro!");
                return;

            }
            else
            {
                ArrayList chaves_primarias = new ArrayList();

                foreach (DataGridViewRow r in grid_aeronave.SelectedRows)
                {
                    chaves_primarias.Add(r.Cells[0].Value.ToString());
                }

                if (MessageBox.Show("Tem certeza que deseja excluir " + chaves_primarias.Count + " aeronave(s)", "Aeronave", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    MyMessageBox message_box = aeronave_control.exclui_aeroporto(chaves_primarias);
                    MessageBox.Show(message_box.String1, message_box.String2);
                    lista_dados();
                }
            }
        }

        private void btnLimpar_Click_1(object sender, EventArgs e)
        {
            limpar();
        }

        private void btnPesquisar_Click_1(object sender, EventArgs e)
        {
            grid_aeronave.DataSource = aeronave_control.pesquisar_modelo(txtPesquisaModelo.Text);
        }

        private void grid_aeronave_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
             atualiza_campos();
        }

        private void formCadastroAeronave_FormClosed(object sender, FormClosedEventArgs e)
        {
           
        }

      
    }
}
